#ifndef _SEM_H
#define _SEM_H
#include "comm/types.h"
#include "tools/list.h"

/**
 * 进程同步用的计数信号量
 */
typedef struct _sem_t{
    int count;
    list_t list_node_wait;
}sem_t;

/**
 * @brief 初始化同步信号
 * 
 * @param sem 
 * @param init_count 
 */
void sem_init (sem_t * sem, int init_count);
/**
 * @brief 申请信号量
 * 
 * @param sem 
 */
void sem_wait (sem_t * sem);

/**
 * @brief 通知信号量
 * 
 * @param sem 
 */
void sem_notify (sem_t * sem);

/**
 * @brief 获得信号量的值
 * 
 * @param sem 
 * @return int 
 */
int sem_count (sem_t * sem);


#endif // !_SEM_H